package com.xnew.ssoApi.service;

import com.xnew.entity.ssoApi.*;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * @author: hexs
 * @Project: JavaLaity
 * @Date: 2022年04月30日 10:15
 * @Description:
 */
public interface SsoApiService {
    /**
     * 根据code获取平台token值
     * @return
     */
    public TokenDo getToken(String code) throws Exception;

    /**
     * 调用平台接口，获取用户信息
     * @return 用户信息
     */
    public LoginDo getUserInfo(String accessToken) throws Exception;

    /**
     * 调用平台接口，刷新 token
     * @return 新token(String)
     */
    public ResultDo refreshToken(String token) throws Exception;

    /**
     * 调用平台接口，刷新 access_token
     * @return 新access_token(String)
     */
    public TokenDo refreshAccessToken(String refresh_token) throws Exception;

    /**
     * 子系统机构账号注册
     * @return ResultDo   msg 返回信息   code 返回值状态码
     */
    public ResultDo SubSystemOrgReg(Map<String,Object> param) throws Exception;

    /**
     * 子系统个人账户注册
     * @return ResultDo   msg 返回信息   code 返回值状态码
     */
    public ResultDo SubSystemPersonalReg(Map<String,Object> param) throws Exception;

    /**
     * 子系统监管账户注册
     * @return ResultDo   msg 返回信息   code 返回值状态码
     */
    public ResultDo SubSystemSupvReg(Map<String,Object> param) throws Exception;


    /**
     * 平台机构账户注册
     * @return ResultDo   msg 返回信息   code 返回值状态码
     */
    public ResultDo PlatformOrgReg(PlatformOrgRegVo params) throws Exception;


    /**
     * 账户状态变更
     * @return ResultDo   msg 返回信息   code 返回值状态码
     */
    public ResultDo OrgAccountState(OrgAccountStateVo params) throws Exception;

    /**
     * 账户信息修改
     * @return ResultDo   msg 返回信息   code 返回值状态码
     */
    public ResultDo Account(AccountVo params) throws Exception;

    /**
     * 机构账户信息修改
     * @return ResultDo   msg 返回信息   code 返回值状态码
     */
    public ResultDo AccountOrg(AccountVo params) throws Exception;

    /**
     * 平台个人账户注册
     * @return ResultDo   msg 返回信息   code 返回值状态码
     */
    public ResultDo PlatformPersonalReg(PlatformPersonalRegVo params) throws Exception;

    /**
     * 平台监管账户注册
     * @return ResultDo   msg 返回信息   code 返回值状态码
     */
    public ResultDo PlatformSupvReg(PlatformSupvRegVo params) throws Exception;

    /**
     * pc端登录方法
     * @author yangcd
     * */
    public Map<String, Object> login(String id, String userName, HttpServletRequest request, String loginType) throws Exception;
}
